package com.tlight.servlet;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.tlight.fachada.Fachadat;
import com.tlight.modelos.Cardapio;
import com.tlight.modelos.Dependente;
import com.tlight.modelos.Prato;
import com.tlight.modelos.Pratos_por_Dia;
import com.tlight.modelos.Responsavel;

/**
 * Servlet implementation class servletMontarCardapio
 */
@WebServlet("/servletMontarCardapio")
public class servletMontarCardapio extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public servletMontarCardapio() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(request, response);
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		try {
			String acao = request.getParameter("acao");
			
			if(acao.equals("montar")){
			//------------------------ Bloco para pegar as pricipais variaveis do jsp ------------------------------
			long idResponsavel = Long.parseLong(request.getParameter("IdResponsavel"));
			long idDepentend = Long.parseLong(request.getParameter("Dependente"));
			
			long idPrato1 = Long.parseLong(request.getParameter("Pratos1"));
			long idPrato2 = Long.parseLong(request.getParameter("Pratos2"));
			long idPrato3 = Long.parseLong(request.getParameter("Pratos3"));
			long idPrato4 = Long.parseLong(request.getParameter("Pratos4"));
			long idPrato5 = Long.parseLong(request.getParameter("Pratos5"));

			
			//------------------------ Bloco para instaciar a fachada ------------------------------------------------
			Fachadat montarCardapio = Fachadat.getInstancia();
			
			//------------------------ Bloco para buscar objetos no banco --------------------------------------------
			Responsavel responsavel = montarCardapio.procurarIdResponsavel(idResponsavel);
			Dependente 	dependente = montarCardapio.procurarIdDependente(idDepentend);
			Prato prato1 = montarCardapio.procurarIdPratos(idPrato1);
			Prato prato2 = montarCardapio.procurarIdPratos(idPrato2);
			Prato prato3 = montarCardapio.procurarIdPratos(idPrato3);
			Prato prato4 = montarCardapio.procurarIdPratos(idPrato4);
			Prato prato5 = montarCardapio.procurarIdPratos(idPrato5);
			
			//------------------------ Bloco para montar pratos por dia -----------------------------------------------
			Pratos_por_Dia ppd1 = new Pratos_por_Dia();
			ppd1.setDia_do_prato((Date) converterStringData(request.getParameter("data_prato_1").trim()));
			ppd1.setPrato(prato1);
			
			Pratos_por_Dia ppd2 = new Pratos_por_Dia();
			ppd2.setDia_do_prato((Date) converterStringData(request.getParameter("data_prato_2").trim()));
			ppd2.setPrato(prato2);
			
			Pratos_por_Dia ppd3 = new Pratos_por_Dia();
			ppd3.setDia_do_prato((Date) converterStringData(request.getParameter("data_prato_3").trim()));
			ppd3.setPrato(prato3);
			
			Pratos_por_Dia ppd4 = new Pratos_por_Dia();
			ppd4.setDia_do_prato((Date) converterStringData(request.getParameter("data_prato_4").trim()));
			ppd4.setPrato(prato4);
			
			Pratos_por_Dia ppd5 = new Pratos_por_Dia();
			ppd5.setDia_do_prato((Date) converterStringData(request.getParameter("data_prato_5").trim()));
			ppd5.setPrato(prato5);
			
			//------------------------ Bloco para montar o cardapio ---------------------------------------------------
			Cardapio cardapio = new Cardapio();
			
			cardapio.setResponsaveis(responsavel);
			cardapio.setDependentes(dependente);
			cardapio.setData_Montagem_cardapio((Date) converterStringData(request.getParameter("data_Montagem_cardapio").trim()));
			cardapio.setValor_do_cardapio(Double.parseDouble(request.getParameter("valorTotal").trim()));
			
			List<Pratos_por_Dia> todos_os_pratos = new ArrayList<Pratos_por_Dia>();
			todos_os_pratos.add(ppd1);
			todos_os_pratos.add(ppd2);
			todos_os_pratos.add(ppd3);
			todos_os_pratos.add(ppd4);
			todos_os_pratos.add(ppd5);
						
			cardapio.setPratos(todos_os_pratos);
			
			//------------------------ Bloco para montar e salvar no banco -----------------------------------------------

			montarCardapio.montarCardapio(cardapio);
			response.sendRedirect("montar_cardapio.jsp");

			}

		} catch (Exception e) {
			// TODO: handle exception
		}
		
	}
		public Date converterStringData(String data) {
			Date d = null;
			try {
				SimpleDateFormat fmtEntrada = new SimpleDateFormat("dd/MM/yyyy"); 
				d = fmtEntrada.parse(data);  
				System.out.println("Data formatada: " + fmtEntrada.format(d));
	
			} catch (Exception e) {
				e.printStackTrace();
			
			}
			return d;
			
		}
}
